package environnement.objets;

import environnement.Environnement;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;



/**
 * Class Rectangle
 * Interface Objet
 */
public class Rectangle implements IObjet {

	//
	// Fields
	//

	/**
	 * Absisse
	 */
	private int x;
	/**
	 * ordonnée
	 */
	private int y;
	/**
	 * Longueur
	 */
	private int longueur ;
	/**
	 * largeur
	 */
	private int largeur ;
	/**
	 * couleur de fond
	 */
	private int color_bg ;
	
	/**
	 * Couleur des bords
	 */
	private int color_bords ;

        /**
         *  Objet rectangle
         */
        private Rectangle2D.Double rectangle;

        /**
         * Objet Environnement (plateau de jeu)
         */
        private Environnement env;
	

	//
	// Constructors
	//
        /**
         *
         * @param x
         * @param y
         * @param longueur
         * @param largeur
         * @param color_bg
         * @param color_bords
         */
	public Rectangle( int x, int y, int longueur, int largeur, int color_bg, int color_bords ) {
		super();
		this.color_bg = color_bg;
		this.color_bords = color_bords;
		this.x = x;
		this.y = y;
		this.longueur = longueur;
		this.largeur = largeur;
                this.env = Environnement.getInstance();
	}

	//
	// Methods
	//

	public int getX() {
		return x;
	}

	public void setX(int x) {
		this.x = x;
	}

	public int getY() {
		return y;
	}

	public void setY(int y) {
		this.y = y;
	}

	public int getLongueur() {
		return longueur;
	}

	public void setLongueur(int longueur) {
		this.longueur = longueur;
	}

	public int getLargeur() {
		return largeur;
	}

	public void setLargeur(int largeur) {
		this.largeur = largeur;
	}


	//
	// Other methods
	//

	/**
	 * Vérifie la présence d'un point à l'intérieur de l'objet
	 * @return       boolean Vraie : dedans, Faux: en dehors
	 * @param        x absisse du point
	 * @param        y ordonnée du point
	 */
	public boolean isIn( int x, int y )
	{
		return rectangle.contains(this.env.getX() + x, this.env.getY() + y);
	}

	/**
	 * dessine l'objet
	 */
	public void dessiner(Graphics2D gr) {
		  this.rectangle = new Rectangle2D.Double(  env.getX() + this.x, env.getY() + this.y, this.largeur, this.longueur);
		  gr.setPaint( new Color( this.color_bg ) );
		  gr.fill( this.rectangle ) ;
		  gr.setPaint( new Color( this.color_bords ) );
		  gr.draw( this.rectangle ) ;
	}


}
